package com.qf.service.impl;



import com.qf.annotation.ProccessInfo;
import com.qf.entity.Item;
import com.qf.exception.BizException;
import com.qf.mapper.ItemDao;
import com.qf.service.ItemService;
import org.springframework.stereotype.Service;


import java.util.List;

@Service
public class ItemServiceImpl implements ItemService {
    private ItemDao itemDao;

    public ItemServiceImpl(ItemDao itemDao) {
        this.itemDao = itemDao;
    }

    @Override
    public List<Item> queryAll() throws BizException {

        List<Item> itemList = null;

        try {
            itemList = itemDao.getAll();
        } catch (Exception e) {
            e.printStackTrace();
            throw new BizException("商品种类查询异常："+e.getMessage());
        }


        return itemList;
    }


    @Override
    public List<Item> getAll() {
        return itemDao.getAll();
    }

    @Override
    public int chackGoods(int itemId) {
        int i = itemDao.chackGoods(itemId);
        if (i == 0) {
            return 0;
        } else {
            return 1;
        }
    }

    /**
     * 通过ID查询单条数据
     *
     * @param id 主键
     * @return 实例对象
     */
    @Override
    public Item queryById(Integer id) {
        return this.itemDao.queryById(id);
    }

    /**
     * 查询多条数据
     *
     * @param offset 查询起始位置
     * @param limit  查询条数
     * @return 对象列表
     */
    @Override
    public List<Item> queryAllByLimit(int offset, int limit) {
        return this.itemDao.queryAllByLimit(offset, limit);
    }

    /**
     * 新增数据
     *
     * @param item 实例对象
     * @return 实例对象
     */
    @Override
    @ProccessInfo(value = "新增商品类型", requireParamInfo = true)
    public Item insert(Item item) {
        this.itemDao.insert(item);
        return item;
    }

    /**
     * 修改数据
     *
     * @param item 实例对象
     * @return 实例对象
     */
    @Override
    @ProccessInfo(value = "更新商品类型", requireParamInfo = true)
    public Item update(Item item) {
        int i = this.itemDao.update(item);
        return this.queryById(item.getId());
    }

    /**
     * 通过主键删除数据
     *
     * @param id 主键
     *
     * @return 是否成功
     */
    @Override
    @ProccessInfo(value = "删除商品类型", requireParamInfo = true)
    public boolean deleteById(Integer id) {

        return this.itemDao.deleteById(id) > 0;

    }
}
